from api.login import LoginAPI
# 创建测试类
class TestLoginAPI:
    # 定义一个全局变量：uid，值为空（None）
    uid = None
    # 前置操作
    def setup_method(self):
        # 实例化接口类，将导入进来的LoginAPI实例化为一个对象
        self.login_api = LoginAPI()
        # 提取验证码的uuid
        resp = self.login_api.get_verify_code()
                    # 通过上一步实例化的对象，调用验证码方法，
                    # 拿到验证码接口的整个响应结果，并且保存到一个resp中
        # 调用验证码方法，拿到验证码的整个响应结果，并且保存到一个变量resp中
        TestLoginAPI.uid = resp.json().get("uuid")
                    #得到uuid的值之后，将其调用的uid中
    # 后置操作
    def teardown_method(self):
        pass
    # 编写测试用例方法
    # 登陆成功
    def test01_success(self):
        login_data = {"username":"admin","password":"HM_2023_test","code":"2","uuid":TestLoginAPI.uid}
        resp = self.login_api.login(test_data=login_data)
        # 断言状态码是否为200
        assert 200 ==resp.status_code
        # 断言响应中是否包含“成功”
        assert "成功" in resp.text
        # 断言响应中数据中code值是否为200
        assert  200 == resp.json().get("code")

    # 登录失败（用户名为空）
    def test02_without_username(self):
        login_data = {"username": "", "password": "HM_2023_test", "code": "2", "uuid": TestLoginAPI.uid}
        resp = self.login_api.login(test_data=login_data)
        # # 断言状态码是否为200
        assert 200 == resp.status_code
        # #  断言响应中是否包含“成功”
        assert "用户不存在" in resp.text
        # # 断言响应中数据中code值是否为200
        assert 500 == resp.json().get("code")
    # 登录失败（未注册用户名）
    def test03_username_not_exit(self):
        login_data = {"username": "", "password": "HM_2023_test", "code": "2", "uuid": TestLoginAPI.uid}
        resp = self.login_api.login(test_data=login_data)
        # # 断言状态码是否为200
        assert 200 == resp.status_code
        # #  断言响应中是否包含“成功”
        assert "用户不存在" in resp.text
        # # 断言响应中数据中code值是否为200
        assert 500 == resp.json().get("code")